package com.bbx.demo.nio;


import lombok.extern.slf4j.Slf4j;

import java.nio.ByteBuffer;

/**
 * 将Buffer转换为一个只读的Buffer（readOnlyBuffer）类型为 HeapByteBufferR，readOnlyBuffer只能进行读操作，不能进行写操作，因为写操作调用的是put() 方法，put()方法直接返回的是一个异常
 */
@Slf4j
public class ByteBufferTest3 {


    public static void  main(String [] args) {
        ByteBuffer buffer = ByteBuffer.allocate(10);
        for( int i = 0;i<buffer.capacity();i++){
            buffer.put((byte) i);
        }

        ByteBuffer readOnlyBuffer = buffer.asReadOnlyBuffer();

        readOnlyBuffer.position(0);
        while (readOnlyBuffer.hasRemaining()){
            byte b = readOnlyBuffer.get();
            log.info("readOnlyBuffer 中的内容[{}]", b);
        }

        //向readOnlyBuffer 写入数据，会抛出异常
        readOnlyBuffer.flip();
        readOnlyBuffer.put((byte) 2);
    }

}
